开始之前:
1. 识别颜色输出相关数据
可识别HUSKYLENS 2 视野内的色块,并将相关数据通过串口打印输出,可以读取的数据有:靠近HUSKYLENS 2 摄像头画面中心的色块ID号、检测到的色块总数、第一个检测到的色块ID号等等。
示例程序如下。
#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2 huskylens;
// 主程序开始
void setup() {
Serial.begin(9600);
Wire.begin();
while (!huskylens.begin(Wire)) {
delay(100);
}
huskylens.switchAlgorithm(ALGORITHM_COLOR_RECOGNITION);
}
void loop() {
huskylens.getResult(ALGORITHM_COLOR_RECOGNITION);
if ((huskylens.available(ALGORITHM_COLOR_RECOGNITION))) {
Serial.println((String("靠近中心的色块ID为:") + String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_COLOR_RECOGNITION), Result, ID)))));
Serial.println((String("检测到的色块总数为:") + String((huskylens.getCachedResultNum(ALGORITHM_COLOR_RECOGNITION)))));
Serial.println((String("第一个检测到的色块ID为:") + String((RET_ITEM_NUM(huskylens.getCachedResultByIndex(ALGORITHM_COLOR_RECOGNITION, 1-1), Result, ID)))));
}
delay(500);
}
将HUSKYLENS 2 的十字光标对准画面中的色块进行学习,如何学习颜色详细操作请看:颜色识别功能说明。
**运行结果:**可输出检测到的色块总数,无论该色块是否已学习,只要方框框出色块,就会计数。可按要求输出相应色块ID号,其中靠近中心的色块被白框框出,即未学习的色块,因此输出的ID号为0。
2. 获取指定颜色的相关数据
HUSKYLENS 2 识别颜色后,可获取画面中指定颜色的相关数据。例如,判断某个已学习的颜色是否在画面中、指定颜色的名称、可获取画面中相同颜色的色块数量,当画面中出现多个相同颜色的色块时,可指定获取其中某个色块的相关参数,包括名称、X/Y坐标、宽度、高度。
示例程序如下:
#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2 huskylens;
// 主程序开始
void setup() {
Serial.begin(9600);
Wire.begin();
while (!huskylens.begin(Wire)) {
delay(100);
}
huskylens.switchAlgorithm(ALGORITHM_COLOR_RECOGNITION);
}
void loop() {
huskylens.getResult(ALGORITHM_COLOR_RECOGNITION);
if ((huskylens.available(ALGORITHM_COLOR_RECOGNITION))) {
if (((huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 1) != NULL))) {
Serial.println((String("ID1色块数量为:") + String((huskylens.getCachedResultNumByID(ALGORITHM_COLOR_RECOGNITION, 1)))));
Serial.println((String("ID1色块名称为:") + String((RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_COLOR_RECOGNITION, 1), Result, name)))));
Serial.println((String("第一个检测到的ID1色块的中心坐标为") + String((String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_COLOR_RECOGNITION, 1, 1-1), Result, xCenter))) + String((String(",") + String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_COLOR_RECOGNITION, 1, 1-1), Result, yCenter)))))))));
}
}
delay(500);
}
**运行结果:**如图所示,可获取到画面中ID1的色块总数、ID1的色块名称,以及第一个检测到的ID1色块的坐标位置。